<!DOCTYPE HTML>
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <meta name="robots" content="index, follow" />
    <meta name="author" content="Paul Bender" />
    <meta name="keywords" content="MiniMyth,Linux,PVR,MythTV,diskless,ION,VDPAU" />
    <meta name="description" content="Instructions on how to boot MiniMyth." />
    <title>MiniMyth - Documents - Boot Instructions</title>
    <link href="css/minimyth.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div class="main">
      <div class="header">
        <div class="heading">MiniMyth from <a href="http://www.minimyth.org/">minimyth.org</a></div>
        <div class="menu">
          <span class="menuItemFirst"><a href="index.html">Home</a></span>
          <span class="menuItem"     ><a href="document.html">Documents</a></span>
          <span class="menuItem"     >Boot</span>
        </div>
      </div>
      <div class="middle">
        <div class="heading">Boot Instructions</div>
        <div id="toc" class="section">
          <div class="heading">Table of contents</div>
          <ul>
            <li><a href="#general">General</a></li>
            <li><a href="#sequence">Boot Sequence</a></li>
            <li><a href="#bootline">Boot Line Parameters</a></li>
            <li><a href="#network">Network Boot</a></li>
            <li><a href="#network-pxelinux">Network Boot using PXELINUX</a></li>
            <li><a href="#network-pxelinux-ram">Network Boot using PXELINUX with a RAM Root File System</a></li>
            <li><a href="#network-pxelinux-nfs">Network boot using PXELINUX with an NFS Root File System</a></li>
            <li><a href="#network-gpxe">Network Boot using gPXE</a></li>
            <li><a href="#network-gpxe-ram">Network Boot using gPXE with a RAM Root File System</a></li>
            <li><a href="#network-gpxe-nfs">Network boot using gPXE with an NFS Root File System</a></li>
            <li><a href="#local">Local Boot</a></li>
            <li><a href="#local-syslinux">Local Boot using SYSLINUX</a></li>
            <li><a href="#local-syslinux-ram-automated">Local Boot using SYSLINUX with a RAM Root File System (automated install)</a></li>
            <li><a href="#local-syslinux-ram-manual">Local Boot using SYSLINUX with a RAM Root File System (manual install)</a></li>
          </ul>
        </div>
        <div id="general" class="section">
          <div class="heading">General</div>
          <p>
            MiniMyth supports two boot methods:
          </p>
          <ul>
            <li>network boot and</li>
            <li>local boot.</li>
          </ul>
          <p>
            MiniMyth supports two root file system types:
          </p>
          <ul>
            <li>RAM root file system and</li>
            <li>NFS root file system.</li>
          </ul>
          <p>
            The primary combination is network boot with a RAM root file system.
            Network boot with an NFS root file system was added to make development and debugging easier.
            Local boot was added
            to support networks that use a DHCP server that cannot be configured to support network boot, and
            to support installations that desire more security than can be provided when the kernel, root file system
            and configuration files are downloaded from a TFTP server.
          </p>
        </div>
        <div id="sequence" class="section">
          <div class="heading">Boot Sequence</div>
          <p>
            Like most Linux distributions, MiniMyth must retrieve multiple items when it boots:
          </p>
          <ol>
            <li>the boot loader,</li>
            <li>the boot loader configuration,</li>
            <li>the kernel,</li>
            <li>the initial root file system (if needed),</li>
            <li>the final root file system (if needed) and</li>
            <li>the MiniMyth configuration.</li>
          </ol>
          <p>
            In some cases, the initial root file system contains everything needed by the system.
            In these cases, there is no need for a separate final root file system,
            because the initial root file system contains all the functionality required of a final root file system.
            For example, when the initial root file system contains all the needed application software,
            there is not need for a separate final root file system.
            Essentially, in these cases, the initial root file system is the final root file system.
          </p>
          <p>
            For MiniMyth using a RAM root file system, the RAM root file system is an initial root file system.
            In addition, there is no final root file system
            because the RAM root file system contains all the functionality needed to run MiniMyth.
          </p>
          <p>
            In some cases, the kernel does not need any extra software in order to retrieve the final root file system.
            In these cases, there is no need for a separate initial root file system,
            because the kernel contains all the functionality required of an initial root file system.
            For example, when all the kernel modules needed to retrieve the final root file system are compiled into the kernel,
            there is no need for an initial root file system to contain and load the needed kernel modules.
            Essentially, in these cases, the kernel is the initial root file system.
          </p>
          <p>
            For MiniMyth using an NFS root file system, the NFS root file system is a final root file system.
            In addition, there is no initial root file system
            because the kernel contains all the functionality needed to mount an NFS root file system.
          </p>
          <p>
            The item retrieval is a chained sequence of events:
          </p>
          <ol>
            <li>the computer BIOS retrieves the boot loader,</li>
            <li>the boot loader retrieves the boot loader configuration, the kernel and the initial root file system (if needed),</li>
            <li>the kernel and the initial root file system retrieve the final root file system (if needed) and</li>
            <li>the root file system retrieves the MiniMyth configuration.</li>
          </ol>
          <p>
            These items need not be retrieved from the same same location. In fact, these items can be divided into three location groups:
          </p>
          <ul>
            <li>the boot loader, the boot loader configuration, the kernel and the initial root file system (if needed),</li>
            <li>the final root file system (if needed) and</li>
            <li>the MiniMyth configuration.</li>
          </ul>
          <p>
            How and from where these items are retrieved depends on the boot method and the root file system type.
          </p>
          <p>
            For MiniMyth using network boot,
            the boot loader, the boot loader configuration, the kernel,
            the initial root file system (if needed) and the MiniMyth configuration
            are retrieved from a server on the network.
            For MiniMyth using local boot,
            the boot loader, the boot loader configuration, the kernel,
            the initial root file system (if needed) and the MiniMyth configuration
            are retrieved from the local storage device.
          </p>
          <p>
            For MiniMyth using a RAM root file system,
            there is no final root file system.
            For MiniMyth using an NFS root file system,
            the final root file system is mounted over the network.
          </p>
        </div>
        <div id="bootline" class="section">
          <div class="heading">Boot Line Parameters</div>
          <p>
            You can affect MiniMyth with boot line (the APPEND line for PXELINUX and SYSLINUX) configuration.
            You can find more information in the
            <a href="document-configure.html#bootline">configuration obtained from the boot line</a>
            section.
          </p>
        </div>
        <div id="network" class="section">
          <div class="heading">Network Boot</div>
          <p>
            For network boot, you must be able to send boot file name in the DHCP's DHCPOFFER message.
            Most Windows, MacOS, Linux and BSD based DHCP servers support sending the boot file name.
            However, most DHCP servers found in off-the-shelf home routers do not support sending the boot file name.
            Therefore, if you are running a computer based DHCP server,
            then you will likely be able to configure and send the boot file name.
            However, if you are running an off-the-shelf home router based DHCP server,
            then you will likely not be able to configure and send the boot file name.
          </p>
          <p>
            In addition, for network boot,
            you must be able to run a TFTP server on your network.
            There are TFTP servers for Windows, MacOS, Linux and BSD.
            Therefore, if you have an always-on computer on your network, then you will likely be able to run a TFTP server.
            However, if you do not have an always on computer on your network, then you will likely not be able to run a TFTP server.
          </p>
          <p>
            If constraints prevent you from meeting either of these two network boot requirements, then your only option is to use the
            <a href="#local">local boot</a> method.
          </p>
          <p>
            For network boot, you need a motherboard and network interface adapter that support network boot.
            While there are other kinds of network boot, the most common is the
            <a href="http://www.pix.net/software/pxeboot/archive/pxespec.pdf">industry standard</a>
            <a href="http://en.wikipedia.org/wiki/Preboot_Execution_Environment">PXE (Preboot eXecution Environment)</a>
            network boot.
            Most modern motherboards with integrated network interface adapters support PXE network boot.
            Therefore, this is the network boot method that we will cover.
          </p>
          <p>
            For PXE network boot, you need a PXE boot loader.
            While their are other PXE boot loaders,
            one of the most widely used PXE boot loaders is
            <a href="http://www.syslinux.org/wiki/index.php/PXELINUX">PXELINUX</a>
            and one of the most flexible PXE boot loaders is
            <a href="http://www.etherboot.org/">gPXE</a>.
            Therefore, these are the PXE boot loaders that we will cover.
          </p>
        </div>
        <div id="network-pxelinux" class="section">
          <div class="heading">Network Boot using PXELINUX</div>
          <p>
            For PXELINUX based
            <a href="#network">network boot</a>,
            the following sequence occurs:
          </p>
          <ul>
            <li>
              The computer BIOS sends a BOOTP request to the DHCP server.
            </li>
            <li>
              The DHCP server tells the computer BIOS
              the IP address of the TFTP server and the location on the TFTP server of the PXELINUX boot loader,
              and the BIOS retrieves the PXELINUX boot loader from the TFTP server.
            </li>
            <li>
              The PXELINUX boot loader tells the PXELINUX boot loader
              the location on the TFTP server of the PXELINUX boot loader configuration file,
              and the PXELINUX boot loader retrieves the PXELINUX boot loader configuration file from the TFTP server.
            </li>
            <li>
              The PXELINUX boot loader configuration file tells the PXELINUX boot loader
              the location on the TFTP server of the kernel file and initial root file system file (if needed),
              and the PXELINUX boot loader retrieves the kernel file and the initial root file system (if needed) from the TFTP server.
            </li>
            <li>
              The PXELINUX boot loader configuration file tells the PXELINUX boot loader, the kernel and the initial root file system (if present)
              the location of the final root file system file (if needed),
              and the kernel and initial root file system (if present) mount the final root file system (if needed).
              <ul>
                <li>
                  For an NFS root file system,
                  the location is the IP address of NFS server and the location on the NFS server of the root file system file.
                </li>
              </ul>
            </li>
          </ul>
          <p>
            Given that most people run their MythTV backend on Linux,
            the most common scenario for network boot is a network running the
            <a href="https://www.isc.org/software/dhcp">ISC DHCP</a>
            server, running a Linux TFTP server and
            using PXELINUX.
            There are numerous guides on the Internet for setting up this network boot configuration.
            I think that the one created for
            <a href="http://www.viaarena.com/Default.aspx?PageID=5&#38;ArticleID=52">network booting an EPIA M motherboard</a> is the best.
          </p>
          <p>
            However, this guide was not written specifically for MiniMyth.
            As a result, the contents of the PXELINUX configuration file and the preferred locations of the kernel and root file system are different.
            Therefore, for this information, be sure to look at the
            <a href="#network-pxelinux-ram">network boot using PXELINUX with a RAM root file system</a>
            section or the
            <a href="#network-pxelinux-nfs">network boot using PXELINUX with an NFS root file system</a>
            section, depending on which root file system type you have chosen.
          </p>
        </div>
        <div id="network-pxelinux-ram" class="section">
          <div class="heading">Network Boot using PXELINUX with a RAM Root File System</div>
          <p>
            First, follow the instructions
            for setting up PXE network boot using PXELINUX found in the
            <a href="#network-pxelinux">network boot using PXELINUX</a> section.
          </p>
          <p>
            Your PXELINUX configuration file should contain the following, where '{version}' is the version of the MiniMyth distribution (e.g. 0.26.0-83):
          </p>
          <pre>
DEFAULT minimyth-ram
NOESCAPE 1

LABEL minimyth-ram
	KERNEL minimyth-{version}/kernel
	APPEND ro root=/dev/ram0 ramdisk_size=192000 initrd=minimyth-{version}/rootfs
          </pre>
          <p>
            Once you have set up your DHCP and TFTP servers for network boot,
            you need to download and install the files for booting a RAM root file system
            by following these steps:
          </p>
          <ol>
            <li>
              Download the files that are necessary for booting a RAM root file system.
              These files can be found in the 'ram-minimyth-{version}.tar.bz2' file in a MiniMyth distribution download directory.
              The location of the MiniMyth distribution download directories can be found in the
              <a href="download.html">MiniMyth download instructions</a>.
            </li>
            <li>
              Extract the 'ram-minimyth-{version}.tar.bz2' file
              by running the command 'tar&#160;-jxf&#160;ram-minimyth-{version}.tar.bz2.
              This should create the directory 'ram-minimyth-{version}'.
            </li>
            <li>
              Change to the user 'root'.
            </li>
            <li>
              Create a directory named 'minimyth-{version}' in the '{boot}' directory.
              The '{boot}' directory is the MiniMyth boot directory on your TFTP server,
              which is the directory on the TFTP server that contains the PXELINUX boot loader file ('pxelinux.0').
            </li>
            <li>
              Copy the 'kernel' file from the 'ram-minimyth-{version}' directory to the '{boot}/minimyth-{version}' directory.
            </li>
            <li>
              Copy the 'rootfs' file from the 'ram-minimyth-{version}' directory to the '{boot}/minimyth-{version}' directory.
            </li>
            <li>
              Copy the 'themes' directory from the 'ram-minimyth-{version}' directory to the '{boot}/minimyth-{version}' directory.
            </li>
          </ol>
          <p>
            Finally, create an appropriate MiniMyth read-only configuration directory in the '{boot}' directory.
            You can find out how to do this in the
            <a href="document-configure.html">MiniMyth configuration instructions</a>.
            If you already have a MiniMyth read-only configuration directory be sure that it is up-to-date for the version of MiniMyth you plan to run.
          </p>
        </div>
        <div id="network-pxelinux-nfs" class="section">
          <div class="heading">Network Boot using PXELINUX with an NFS Root File System</div>
          <p>
            First, follow the instructions
            for setting up PXE network boot using PXELINUX found in the
            <a href="#network-pxelinux">network boot using PXELINUX</a> section.
          </p>
          <p>
            Your PXELINUX configuration file should contain the following, where
             '{version}' is the version of the MiniMyth distribution (e.g. 0.26.0-83),
            '{nfs-server}' is the IPv4 address of the NFS server and
            '{nfs-directory}/minimyth-{version}' is the MiniMyth root file system shared by the NFS server:
          </p>
          <pre>
DEFAULT minimyth-nfs
NOESCAPE 1

LABEL minimyth-nfs
	KERNEL minimyth-{version}/kernel
	APPEND ro root=/dev/nfs ip=dhcp nfsroot={nfs-server}:/{nfs-directory}/minimyth-{version}
          </pre>
          <p>
            Once you have set up your DHCP and TFTP servers for network boot,
            you need to download and install the files for booting an NFS root file system
            by following these steps:
          </p>
          <ol>
            <li>
              Download the files that are necessary for booting an NFS root file system.
              These files can be found in the 'nfs-minimyth-{version}.tar.bz2' file in a MiniMyth distribution download directory.
              The location of the MiniMyth distribution download directories can be found in the
              <a href="download.html">MiniMyth download instructions</a>.
            </li>
            <li>
              Extract the 'nfs-minimyth-{version}.tar.bz2' file
              by running the command 'tar&#160;-jxf&#160;nfs-minimyth-{version}.tar.bz2.
              This should create the directory 'nfs-minimyth-{version}'.
            </li>
            <li>
              Change to the user 'root'.
              The root file system contains device nodes and programs that are SUID.
              Therefore, if you do not extract the root file system as root, MiniMyth will not boot correctly.
            </li>
            <li>
              Create a directory named 'minimyth-{version}' in the '{boot}' directory.
              The '{boot}' directory is the MiniMyth boot directory on your TFTP server,
              which is the directory on the TFTP server that contains the PXELINUX boot loader file ('pxelinux.0').
            </li>
            <li>
              Copy the 'kernel' file from the 'nfs-minimyth-{version}' directory to the '{boot}/minimyth-{version}' directory.
            </li>
            <li>
              Extract the 'nfs-minimyth-{version}/rootfs.tar.bz2' file
              by running the command 'tar&#160;-jxf&#160;rootfs.tar.bz2' in the 'nfs-minimyth-${version}' directory.
              This should create the directory nfs-minimyth-{version}/rootfs'.
            </li>
            <li>
              Extract the 'nfs-minimyth-{version}/themes.tar.bz2' file
              by running the command 'tar&#160;-jxf&#160;themes.tar.bz2' in the 'nfs-minimyth-${version}' directory.
              This should create the directory nfs-minimyth-{version}/themes'.
            </li>
            <li>
               Move the contents of the 'nfs-minimyth-{version}/themes' directory to the
               'nfs-minimyth-{version}/rootfs/rootfs-ro/usr/share/mythtv/themes' directory.
            </li>
            <li>
              Create a directory named 'minimyth-{version}' in the '{nfs-directory}' directory.
              The '{nfs-directory}' directory is a directory on your NFS server.
            </li>
            <li>
              Move the contents of the 'nfs-minimyth-{version}/rootfs' directory to the '{nfs-directory}/minimyth-{version}' directory.
            </li>
            <li>
              Share the '{nfs-directory}/minimyth-{version}' directory using NFS.
              This NFS share can (and should) be read only and squash root.
            </li>
          </ol>
          <p>
            Finally, create an appropriate MiniMyth read-only configuration directory in the '{boot}' directory.
            You can find out how to do this in the
            <a href="document-configure.html">MiniMyth configuration instructions</a>.
            If you already have a MiniMyth read-only configuration directory be sure that it is up-to-date for the version of MiniMyth you plan to run.
          </p>
        </div>
        <div id="network-gpxe" class="section">
          <div class="heading">Network Boot using gPXE</div>
          <p>
            For gPXE based
            <a href="#network">network boot</a>,
            the following sequence occurs:
          </p>
          <ul>
            <li>
              The computer BIOS sends a BOOTP request to the DHCP server.
            </li>
            <li>
              The DHCP server tells the computer BIOS
              the IP address of the TFTP server and the location on the TFTP server of the gPXE boot loader,
              and the BIOS retrieves the gPXE boot loader from the TFTP server.
            </li>
            <li>
              The DHCP server tells the gPXE boot loader
              the URI of the gPXE boot loader configuration file,
              and the gPXE boot loader retrieves the gPXE boot loader configuration file found at the URI.
            </li>
            <li>
              The gPXE boot loader configuration file tells the gPXE boot loader
              the URI of the kernel file and the URI of the initial root file system file (if needed),
              and the gPXE boot loader retrieves the kernel file and the initial root file system (if needed) found at their respective URIs.
            </li>
            <li>
              The gPXE boot loader configuration file tells the gPXE boot loader, the kernel and the initial root file system (if present)
              the location of the final root file system file (if needed),
              and the kernel and initial root file system (if present) mount the final root file system (if needed).
              <ul>
                <li>
                  For an NFS root file system,
                  the location is the IP address of NFS server and the location on the NFS server of the root file system file.
                </li>
              </ul>
            </li>
          </ul>
          <p>
            Given that most people run their MythTV backend on Linux,
            the most common scenario for network boot is a network running the
            <a href="https://www.isc.org/software/dhcp">ISC DHCP</a>
            server, running a Linux TFTP server and
            using PXELINUX.
            There are numerous guides on the Internet for setting up this network boot configuration.
            Unfortunately, there are few guides on the Internet for network boot on a network running the
            <a href="https://www.isc.org/software/dhcp">ISC DHCP</a>
            server, running a Linux TFTP,
            running the
            <a href="http://httpd.apache.org/">Apache HTTP</a>
            server and chainloading gPXE.
            At some point, I should write one.
          </p>
        </div>
        <div id="network-gpxe-ram" class="section">
          <div class="heading">Network Boot using gPXE with a RAM Root File System</div>
          <p>
            First, follow the instructions
            for setting up PXE network boot using gPXE found in the
            <a href="#network-gpxe">network boot using gPXE</a> section.
          </p>
          <p>
            Your gPXE configuration file should contain the following, where '{version}' is the version of the MiniMyth distribution (e.g. 0.26.0-83):
          </p>
          <pre>
#!gpxe

kernel http://tftp.home/minimyth/minimyth-{version}/kernel ro root=/dev/ram0 ramdisk_size=192000
initrd http://tftp.home/minimyth/minimyth-{version}/rootfs

boot
          </pre>
          <p>
            Once you have set up your DHCP, TFTP and HTTP servers for network boot,
            you need to download and install the files for booting a RAM root file system
            by following these steps:
          </p>
          <ol>
            <li>
              Download the files that are necessary for booting a RAM root file system.
              These files can be found in the 'ram-minimyth-{version}.tar.bz2' file in a MiniMyth distribution download directory.
              The location of the MiniMyth distribution download directories can be found in the
              <a href="download.html">MiniMyth download instructions</a>.
            </li>
            <li>
              Extract the 'ram-minimyth-{version}.tar.bz2' file
              by running the command 'tar&#160;-jxf&#160;ram-minimyth-{version}.tar.bz2.
              This should create the directory 'ram-minimyth-{version}'.
            </li>
            <li>
              Change to the user 'root'.
            </li>
            <li>
              Create a directory named 'minimyth-{version}' in the '{boot}' directory.
              The '{boot}' directory is the MiniMyth boot directory on your TFTP server,
              which is the directory on the TFTP server that contains the gPXE boot loader file ('gPXE.0').
            </li>
            <li>
              Copy the 'kernel' file from the 'ram-minimyth-{version}' directory to the '{boot}/minimyth-{version}' directory.
            </li>
            <li>
              Copy the 'rootfs' file from the 'ram-minimyth-{version}' directory to the '{boot}/minimyth-{version}' directory.
            </li>
            <li>
              Copy the 'themes' directory from the 'ram-minimyth-{version}' directory to the '{boot}/minimyth-{version}' directory.
            </li>
          </ol>
          <p>
            Finally, create an appropriate MiniMyth read-only configuration directory in the '{boot}' directory.
            You can find out how to do this in the
            <a href="document-configure.html">MiniMyth configuration instructions</a>.
            If you already have a MiniMyth read-only configuration directory be sure that it is up-to-date for the version of MiniMyth you plan to run.
          </p>
          <p>
            In order to locate MiniMyth distribution files
            such as the theme file system images and the extras file system image,
            MiniMyth needs to know the location of the MiniMyth distribution used to boot MiniMyth.
            Normally, MiniMyth uses the 'initrd' boot line parameter
            to determine the location of the MiniMyth distribution used to boot MiniMyth.
            When the 'initrd' kernel boot line parameter is not present,
            MiniMyth assumes that the MiniMyth distribution used to boot MiniMyth is located in
            '{<a href="document-minimyth_conf.html#MM_MINIMYTH_BOOT_URL">MM_MINIMYTH_BOOT_URL</a>}/minimyth-{version}/'.
            Since, gPXE does not use the 'initrd' boot line parameter,
            MiniMyth will assume that the MiniMyth distribution used to boot MiniMyth is located in
            '{<a href="document-minimyth_conf.html#MM_MINIMYTH_BOOT_URL">MM_MINIMYTH_BOOT_URL</a>}/minimyth-{version}/'.
            Therefore, when booting using gPXE, it is important that your root file system be located at
            '{<a href="document-minimyth_conf.html#MM_MINIMYTH_BOOT_URL">MM_MINIMYTH_BOOT_URL</a>}/minimyth-{version}/'.
          </p>
        </div>
        <div id="network-gpxe-nfs" class="section">
          <div class="heading">Network Boot using gPXE with an NFS Root File System</div>
          <p>
            First, follow the instructions
            for setting up PXE network boot using gPXE found in the
            <a href="#network-gpxe">network boot using gPXE</a> section.
          </p>
          <p>
            Your gPXE configuration file should contain the following, where
             '{version}' is the version of the MiniMyth distribution (e.g. 0.26.0-83),
            '{nfs-server}' is the IPv4 address of the NFS server and
            '{nfs-directory}/minimyth-{version}' is the MiniMyth root file system shared by the NFS server:
          </p>
          <pre>
#!gpxe

kernel http://tftp.home/minimyth/minimyth-{version}/kernel ro root=/dev/nfs ip=dhcp nfsroot={nfs-server}:/{nfs-directory}/minimyth-{version}

boot
          </pre>
          <p>
            Once you have set up your DHCP, TFTP and HTTP servers for network boot,
            you need to download and install the files for booting an NFS root file system
            by following these steps:
          </p>
          <ol>
            <li>
              Download the files that are necessary for booting an NFS root file system.
              These files can be found in the 'nfs-minimyth-{version}.tar.bz2' file in a MiniMyth distribution download directory.
              The location of the MiniMyth distribution download directories can be found in the
              <a href="download.html">MiniMyth download instructions</a>.
            </li>
            <li>
              Extract the 'nfs-minimyth-{version}.tar.bz2' file
              by running the command 'tar&#160;-jxf&#160;nfs-minimyth-{version}.tar.bz2.
              This should create the directory 'nfs-minimyth-{version}'.
            </li>
            <li>
              Change to the user 'root'.
            </li>
            <li>
              Create a directory named 'minimyth-{version}' in the '{boot}' directory.
              The '{boot}' directory is the MiniMyth boot directory on your TFTP server,
              which is the directory on the TFTP server that contains the gPXE boot loader file ('gpxe.0').
            </li>
            <li>
              Copy the 'kernel' file from the 'nfs-minimyth-{version}' directory to the '{boot}/minimyth-{version}' directory.
            </li>
            <li>
              Extract the 'nfs-minimyth-{version}/rootfs.tar.bz2' file
              by running the command 'tar&#160;-jxf&#160;rootfs.tar.bz2' in the 'nfs-minimyth-${version}' directory.
              This should create the directory nfs-minimyth-{version}/rootfs'.
            </li>
            <li>
              Extract the 'nfs-minimyth-{version}/themes.tar.bz2' file
              by running the command 'tar&#160;-jxf&#160;themes.tar.bz2' in the 'nfs-minimyth-${version}' directory.
              This should create the directory nfs-minimyth-{version}/themes'.
            </li>
            <li>
               Move the contents of the 'nfs-minimyth-{version}/themes' directory to the
               'nfs-minimyth-{version}/rootfs/rootfs-ro/usr/share/mythtv/themes' directory.
            </li>
            <li>
              Create a directory named 'minimyth-{version}' in the '{nfs-directory}' directory.
              The '{nfs-directory}' directory is a directory on your NFS server.
            </li>
            <li>
              Move the contents of the 'nfs-minimyth-{version}/rootfs' directory to the '{nfs-directory}/minimyth-{version}' directory.
            </li>
            <li>
              Share the '{nfs-directory}/minimyth-{version}' directory using NFS.
              This NFS share can (and should) be read only and squash root.
            </li>
          </ol>
          <p>
            Finally, create an appropriate MiniMyth read-only configuration directory in the '{boot}' directory.
            You can find out how to do this in the
            <a href="document-configure.html">MiniMyth configuration instructions</a>.
            If you already have a MiniMyth read-only configuration directory be sure that it is up-to-date for the version of MiniMyth you plan to run.
          </p>
        </div>
        <div id="local" class="section">
          <div class="heading">Local Boot</div>
          <p>
            MiniMyth can boot from a local flash device.
            It can boot from a USB flash disk connected using USB.
            It can boot from a CompactFlash card connected using a CF-to-IDE adapter.
            However, it should be noted that people have had trouble
            with <em>very long</em> loading times for the MiniMyth kernel and MiniMyth RAM root file system
            when booting from a USB flash disk.
          </p>
          <p>
            Since MiniMyth make no assumptions about the media,
            it should be able to local boot from other types of local storage devices (e.g. a hard disk) as well.
            However, we have not tested this and this page does not contain instructions for these configurations.
          </p>
          <p>
            For local boot, you can use any boot loader that is able to boot Linux from a FAT partition and has initial RAM disk (initrd) support.
            Boot loaders that meet these requirements include popular boot loaders such as
            <a href="http://www.gnu.org/software/grub/">GRUB</a>
            and
            <a href="http://lilo.go.dyndns.org/">LILO</a>.
            However, in this documentation and the automated installation scripts, we use
            <a href="http://www.syslinux.org/wiki/index.php/SYSLINUX">SYSLINUX</a>,
            which is a close relative of the
            <a href="http://www.syslinux.org/wiki/index.php/PXELINUX">PXELINUX</a>
            boot loader that we use to support
            <a href="#network-pxelinux">network boot using PXELINUX</a>.
          </p>
        </div>
        <div id="local-syslinux" class="section">
          <div class="heading">Local Boot using SYSLINUX</div>
          <p>
            For SYSLINUX based
            <a href="#local">local boot</a>,
            the following sequence occurs:
          </p>
          <ul>
            <li>
              The computer BIOS queries the local storage device for the location on the local storage device of the SYSLINUX boot loader.
            </li>
            <li>
              The boot sector on the local storage device tells the computer BIOS
              the location on the local storage device of the SYSLINUX boot loader file,
              and the BIOS retrieves the SYSLINUX boot loader from the local storage device.
            </li>
            <li>
              The SYSLINUX boot loader tells the SYSLINUX boot loader
              the location on the local storage device of the SYSLINUX boot loader configuration file,
              and the SYSLINUX boot loader retrieves the SYSLINUX boot loader configuration file.
            </li>
            <li>
              The SYSLINUX boot loader configuration file tells the SYSLINUX boot loader
              the location on the local storage device of the kernel file and initial root file system file (if needed),
              and the SYSLINUX boot loader retrieves the kernel and the initial root file system image (if needed).
            </li>
            <li>
              The SYSLINUX boot loader configuration file tells the SYSLINUX boot loader, the kernel and the initial root file system (if present)
              the location of the final root file system (if needed),
              and the kernel and initial root file system (if present) mount the final root file system (if needed).
            </li>
          </ul>
          <p>
            There is no reason that MiniMyth cannot local boot the boot loader and kernel while using an NFS root file system.
            However, we have not tested this and this page does not include instructions for this configuration.
          </p>
          <p>
            There is no reason that MiniMyth cannot local boot with a regular (non RAM) root file system.
            However, we have not tested and this page does not include instructions for this configuration.
          </p>
          <p>
            This leaves us with local boot with a RAM root file system.
          </p>
          <p>
            Given that most people run their MythTV backend on Linux,
            most people should have a computer running Linux.
            Therefore, we will give instructions for installing local boot MiniMyth using a computer running Linux.
          </p>
          <p>
            The are two methods for creating a MiniMyth local boot device with a RAM root file system:
            <a href="#local-syslinux-ram-automated">automated</a>
            and
            <a href="#local-syslinux-ram-manual">manual</a>.
            We will cover both.
          </p>
        </div>
        <div id="local-syslinux-ram-automated" class="section">
          <div class="heading">Local Boot using SYSLINUX with a RAM Root File System (automated install)</div>
          <p>
          </p>
          <p>
            The MiniMyth distribution contains a shell script that will create a MiniMyth local boot device
            from a USB connected, flash device.
            This shell script attempts to detect the flash device and automates the manual steps for creating a MiniMyth local boot device
            with a RAM root file system.
            To run this shell script, do the following:
          </p>
          <ol>
            <li>
              If you do not already have one,
              create a MiniMyth read-only configuration directory with your desired files.
              You can find out how to do this in the
              <a href="document-configure.html">MiniMyth configuration instructions</a>.
              If you already have a MiniMyth read-only configuration directory be sure that it is up-to-date for the version of MiniMyth you plan to run.
            </li>
            <li>
              Connect your flash device to the computer running Linux through the USB interface.
              A USB flash disk can be connected directly.
              A CompactFlash card can be connected through a USB card reader.
            </li>
            <li>
              Download the 'mm_local_install' and 'mm_local_helper' shell scripts
              from the MiniMyth distribution download directory's 'scripts' directory.
              The location of the MiniMyth distribution download directories can be found in the
              <a href="download.html">MiniMyth download instructions</a>.
            </li>
            <li>
              Run the command 'bash mm_local_install {directory}',
              where '{directory}' is the directory that contains your MiniMyth read-only configuration directory.
            </li>
            <li>
              Review the information reported by 'mm_local_install' and decide whether or not allow 'mm_local_install' to continue.
              If the flash device is not correct or 'mm_local_install' was unable to detect the flash device,
              then you can provide the desired flash device as the second argument to 'mm_local_install'.
              If the MiniMyth distribution download URL is not correct or you want to install a MiniMyth distribution from a different location,
              then you can provide the URL that points to the desired MiniMyth distribution as the third argument of 'mm_local_install'.
            </li>
            <li>
              Disconnect your flash device from the computer and connect it to your MiniMyth system.
            </li>
          </ol>
          <p>
            If you want to see what was installed on the flash device, you can reconnect it and mount it.
            Essentially, 'mm_local_install' formatted the flash device as FAT,
            installed the SYSLINUX boot loader and boot loader configuration file,
            and installed all the files in the 'ram-minimyth-{version}.tar.bz2' file from the MiniMyth distribution,
            including the 'minimyth.md5' file, 'kernel' file, the 'rootfs' file and the 'themes' directory.
          </p>
        </div>
        <div id="local-syslinux-ram-manual" class="section">
          <div class="heading">Local Boot using SYSLINUX with a RAM Root File System (manual install)</div>
          <p>
            If there is some reason that you cannot perform (or do not wish to perform) an
            <a href="#local-syslinux-ram-automated">automated install</a>,
            then you can perform a manual install by following the instructions below:
          </p>
          <ol>
            <li>
              If you do not already have one,
              create a MiniMyth read-only configuration directory with your desired files.
              You can find out how to do this in the
              <a href="document-configure.html">MiniMyth configuration instructions</a>.
              If you already have a MiniMyth read-only configuration directory be sure that it is up-to-date for the version of MiniMyth you plan to run.
            </li>
            <li>
              Connect your flash device to the computer through the USB interface.
              A USB flash disk can be connected directly.
              A CompactFlash card can be connected through a USB card reader.
            </li>
            <li>
              Download the files that are necessary for booting a RAM root file system.
              These files can be found in the 'ram-minimyth-{version}.tar.bz2' file in a MiniMyth distribution download directory.
              The location of the MiniMyth distribution download directories can be found in the
              <a href="download.html">MiniMyth download instructions</a>.
            </li>
            <li>
              Extract the 'ram-minimyth-{version}.tar.bz2' file
              by running the command 'tar&#160;-jxf&#160;ram-minimyth-{version}.tar.bz2.
              This should create the directory 'ram-minimyth-{version}'.
            </li>
            <li>
              Change to the user 'root'.
            </li>
            <li>
              Make sure that your flash device is not mounted
              by running the command 'umount&#160;/dev/{device}',
              where '{device}' is your flash device (e.g. sda).
            </li>
            <li>
              Format your flash device with the label 'minimyth' and a FAT file system having lowercase and long file name support
              by running the command 'mkfs.msdos&#160;-I&#160;-F&#160;32&#160;-n&#160;minimyth&#160;/dev/{device}'.
              The FAT file system is used because it is supported by both SYSLINUX and MiniMyth.
              The lowercase and long file name support is needed
              because configuration file names are case sensitive and do not conform to the 8.3 file format.
              The label 'minimyth' is used because MiniMyth identifies any partition labeled 'minimyth' as the MiniMyth boot partition.
            </li>
            <li>
              Install the SYSLINUX boot loader on your flash device
              by running the command 'syslinux&#160;/dev/{device}'.
            </li>
            <li>
              Mount your flash device
              by running the command 'mount&#160;/dev/{device}&#160;{boot}',
              where '{boot}' is a mount point of your choosing.
            </li>
            <li>
              Create the SYSLINUX configuration file '{boot}/syslinux.cfg' containing
              <pre>
DEFAULT minimyth-ram

LABEL minimyth-ram
	KERNEL kernel
	APPEND ro root=/dev/ram0 ramdisk_size=192000 initrd=rootfs
              </pre>
            </li>
            <li>
              Copy the 'kernel' file from the 'ram-minimyth-{version}' directory to the '{boot}' directory.
            </li>
            <li>
              Copy the 'rootfs' file from the 'ram-minimyth-{version}' directory to the '{boot}' directory.
            </li>
            <li>
              Copy the 'themes' directory from the 'ram-minimyth-{version}' directory to the '{boot}' directory.
            </li>
            <li>
              Create the MiniMyth distribution file list
              by running the command
              'cd&#160;${boot}&#160;;&#160;md5sum&#160;`ls&#160;-1&#160;kernel&#160;rootfs&#160;themes/*`&#160;&#62;&#160;minimyth.md5'.
              The MiniMyth distribution file list will be needed in the future
              when running the local boot update command 'mm_local_update'
              to update your MiniMyth distribution to the latest version.
            </li>
            <li>
              Copy your MiniMyth read-only configuration directory ('conf') to the '{boot}' directory.
            </li>
            <li>
              Make sure that everything has been written to your flash device
              by running the command 'sync'.
            </li>
            <li>
              Unmount your flash device
              by running the command 'umount&#160;${boot}'.
            </li>
            <li>
              Disconnect your flash device from the computer and connect it to your MiniMyth system.
            </li>
          </ol>
          <p>
            While we have used the SYSLINUX boot loader,
            there should be no reason that you cannot use a different boot loader,
            but we have not tested this.
            Independent of the boot loader used,
            you must format the drive/partition as FAT,
            because that is the only file system recognized by MiniMyth.
            Independent of the boot loader used,
            you the file system must support lowercase and long file names,
            because configuration files are case sensitive and do not conform to the 8.3 file format.
          </p>
          <p>
            While we have used a flash device,
            there should be no reason that you cannot use a different local storage device (e.g. a hard disk),
            but we have not tested this.
          </p>
          <p>
            While we have used a computer running Linux to perform the manual install,
            there should be no reason that you cannot use a computer running Windows to perform the manual install,
            but we have not tested this.
            <a href="http://www.syslinux.org/wiki/index.php/SYSLINUX">The SYSLINUX website</a>
            has instructions for installing the SYSLINUX boot loader from a computer running Windows.
            When creating text files such as the SYSLINUX configuration file and the MiniMyth configuration file and script,
            be sure that you use an editor that writes Unix text file format and not DOS text file format.
          </p>
        </div>
      </div>
      <div class="footer">
        <hr />
        <div class="html5">
          <a href="http://www.w3.org/"><img
              title="HTML5"
              src="image/HTML5_Logo_32.png"
              alt="HTML5" /></a>
        </div>
        <div class="valid">
          <a href="http://validator.w3.org/check?uri=referer"><img
              style="border:0;width:88px;height:31px"
              title="Valid HTML5!"
              src="image/validicons-blueHTML.gif"
              alt="Valid HTML5!" /></a>
          <a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"><img
              style="border:0;width:88px;height:31px"
              title="Valid CSS3!"
              src="image/validicons-blueCSS.gif"
              alt="Valid CSS3!" /></a>
        </div>
        <div class="version">
          Last Updated on 2012-12-07
        </div>
        <div class="address">
          &#60;&#160;mailto&#160;:&#160;webmaster&#160;at&#160;minimyth&#160;dot&#160;org&#160;&#62;
        </div>
        <div class="copyright">
          &#169; 2006-2012 Paul Bender
        </div>
      </div>
    </div>
  </body>
</html>
